package com.example.john.myfund;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;

import com.httputils.CacheBean;
import com.myfp.myfund.AppBean;
import com.myfp.myfund.ICallbackListener;
import com.utils.MyNetwork;

import org.apache.http.NameValuePair;

import java.util.List;
import java.util.Map;

/**
 * Created by john on 2015/11/12.
 */
public abstract class BaseActivity extends Activity implements ICallbackListener{


    public AppBean appBean;
    public MyNetwork myNetwork;
    public CacheBean cacheBean;
    public View rootView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        appBean= new AppBean();
        cacheBean = appBean.getCacheBean();
        myNetwork = new MyNetwork(appBean, this);

       // SDKInitializer.initialize(this);
    }

    public MyNetwork getMyNetwork() {
        return myNetwork;
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        myNetwork.dialogDestroy();
    }

    /**
     * 初始化视图 注：只做控件的获取不做数据绑定等处理
     */
    public abstract void initView();

    /**
     * 初始化数据 注：数据处理相关的
     */
    public abstract void initData();

    /**
     * 初始化监听器
     */
    public abstract void initListener();

    /**
     * 发送POST请求
     *
     * @param paramList
     *            请求参数
     * @param ct
     *            上下文对象
     * @param url
     *            请求地址
     * @param waitDialogType
     *            请求等待对话框类型 DialogUtils.NO_WAIT_DIALOG 不需要等待框
     *            DialogUtils.WAIT_DIALOG 普通的等待框
     */
    public void sendPostRequest(List<NameValuePair> paramList, Context ct,
                                String url, int waitDialogType) {
        myNetwork.sendPostRequest(paramList, ct, url, waitDialogType);
    }

    /**
     * 发送POST请求,通过JSON
     *
     * @param map
     *            请求参数
     * @param ct
     *            上下文对象
     * @param url
     *            请求地址
     * @param waitDialogType
     *            请求等待对话框类型 DialogUtils.NO_WAIT_DIALOG 不需要等待框
     *            DialogUtils.WAIT_DIALOG 普通的等待框
     */
    public void sendPostByJsonRequest(Map<String, Object> map, Context ct, String url, int waitDialogType) {
        myNetwork.sendJsonRequest(map, ct, url, waitDialogType);
    }

    /**
     * 发送POST请求
     *
     * @param //paramList
     *            请求参数
     * @param ct
     *            上下文对象
     * @param url
     *            请求地址
     * @param waitDialogType
     *            请求等待对话框类型 DialogUtils.NO_WAIT_DIALOG 不需要等待框
     *            DialogUtils.WAIT_DIALOG 普通的等待框
     */
    public void sendPostRequestImage(List<NameValuePair> params, Context ct,
                                     String url, int waitDialogType, String path) {
        myNetwork.sendPostRequestImage(params, ct, url, waitDialogType, path);
    }

    /**
     * 发送POST请求
     *
     * @param paramList
     *            请求参数
     * @param ct
     *            上下文对象
     * @param url
     *            请求地址
     * @param delay
     *            延迟时间
     * @param waitDialogType
     *            请求等待对话框类型 DialogUtils.NO_WAIT_DIALOG 不需要等待框
     *            DialogUtils.WAIT_DIALOG 普通的等待框
     */
    public void sendPostRequest(List<NameValuePair> paramList, Context ct,
                                String url, int waitDialogType, long delay) {
        myNetwork.sendPostRequest(paramList, ct, url, waitDialogType, delay);
    }

    @Override
    public void callback(Integer statValue, String url, String str) {

    }

    @Override
    public void callbackByte(Integer statValue, String url, byte[] arr) {

    }

    @Override
    public void callbackBigFile(Integer statValue, String url) {

    }

}
